package middlware;

import java.io.*;
import java.net.*;

public class ClientRequestHandler{
	
	Socket s = null;
	
	public ClientRequestHandler() 
	throws UnknownHostException, IOException {
		this.s = new Socket("127.0.0.1", 1500);
	}
	
	//Essa mensagem na realidade seria serializada
	public byte[] recebeRequisicaoRequestor(byte[] msgSer) throws IOException, InterruptedException{
		ObjectOutputStream outToServerRequestHandler;
		outToServerRequestHandler = new ObjectOutputStream(s.getOutputStream());
		outToServerRequestHandler.writeObject(msgSer);
		CriaConexao cn = new CriaConexao(s);
		return cn.getMsgResSer();
	}
	
	
	class CriaConexao implements Runnable {
		private Socket conexao;
		private byte[] msgResSer;

		public byte[] getMsgResSer() {
			return msgResSer;
		}

		public void setMsgResSer(byte[] msgResSer) {
			this.msgResSer = msgResSer;
		}


		public CriaConexao(Socket conexao) throws InterruptedException {
			this.conexao = conexao;
			Thread t = new Thread(this);
			t.start();
			t.join();
		}
		

		public void run(){
			ObjectInputStream recebeResposta = null;
			
			//na realidade sera recebida uma mensagem serializada
			
			byte[] msgRetornada = null;
			try {
				recebeResposta = new ObjectInputStream(conexao.getInputStream());
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} 
			try {
				msgRetornada = (byte[]) recebeResposta.readObject();
				//essa mensagem serializa deve ser passada recebeRespostaClientRequestHandler
                setMsgResSer(msgRetornada);				
				
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	    }
		
	}
	
}

